﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FSY.Components.DataProvider;
using FSY.API.Utilities;
using FSY.API.CacheManager;
using FSY.Globals;
namespace FSY.Components.Entities
{
    public class Fsy_MenuModuleController
    {
        private static int InsertDeleteUpdate(Fsy_MenuModule menuModule, DataProviderAction action)
        {
            Fsy_Cache.RemoveCache(cachKeyMenuModuleByMenu);
            Fsy_Cache.RemoveCache(cachKeyMenuModuleAll);
            return Fsy_DataProvider.Instance.MenuModule_AddDeleteUpdate(menuModule, action);
        }
        public static int Insert(Fsy_MenuModule menuModule)
        {
            return InsertDeleteUpdate(menuModule, DataProviderAction.Insert);
        }
        public static int Delete(int ID)
        {
            Fsy_MenuModule menuModule = new Fsy_MenuModule();
            menuModule.ID = ID;
            return InsertDeleteUpdate(menuModule, DataProviderAction.Delete);
        }
        public static int Update(Fsy_MenuModule menuModule)
        {
            return InsertDeleteUpdate(menuModule, DataProviderAction.Update);
        }
        static string cachKeyMenuModuleAll = "MenuModuleAll";
        private static object objlock = new object();
        public static List<Fsy_MenuModule> GetAllMenuModule()
        {            
            List<Fsy_MenuModule> lsMenuModule = new List<Fsy_MenuModule>();
            lock (objlock)
            {
                lsMenuModule = (List<Fsy_MenuModule>)Fsy_Cache.GetCache(cachKeyMenuModuleAll);
                if (lsMenuModule == null)
                {
                    lsMenuModule = Fsy_DataProvider.Instance.MenuModule_GetListAll();
                    Fsy_Cache.SetCache(cachKeyMenuModuleAll, lsMenuModule, Fsy_Config.SlidingExpiration());
                    return lsMenuModule;
                }
            }
            return lsMenuModule;
        }
        static string cachKeyMenuModuleByMenu = "MenuModuleByMenu";
        public static List<Fsy_MenuModule> GetMenuModuleByMenuID(int menuID)
        {
            List<Fsy_MenuModule> lsMenuModule = new List<Fsy_MenuModule>();
            lock (objlock)
            {
                lsMenuModule = (List<Fsy_MenuModule>)Fsy_Cache.GetCache(cachKeyMenuModuleByMenu);
                if (lsMenuModule == null)
                {
                    lsMenuModule = Fsy_DataProvider.Instance.MenuModule_GetByMenuID(menuID);
                    Fsy_Cache.SetCache(cachKeyMenuModuleByMenu, lsMenuModule, Fsy_Config.SlidingExpiration());
                    return lsMenuModule;
                }
            }
            return lsMenuModule;
        }
        public static bool IsAuthorization(int user, int role)
        {
            return false;
        }
    }
}
